﻿using System.Web;
using System.Web.Optimization;

namespace Mvc.RazorTools
{
	/// <summary>
	/// The interface definition for an MVC Razor Tools bundle.
	/// </summary>
	interface IRazorToolsBundle
	{
		/// <summary>
		/// Gets the virtual path used to reference the System.Web.Optimization. Bundle 
		/// from within a view or Web page.
		/// </summary>
		string Path { get; set; }

		/// <summary>
		/// Gets a reference to the Bundle instance.
		/// </summary>
		Bundle Bundle { get; }

		/// <summary>
		/// Specifies a set of files to be included in the System.Web.Optimization.Bundle.
		/// </summary>
		/// <param name="virtualPaths">The virtual path of the file or file pattern to be 
		/// included in the bundle.</param>
		/// <returns>The System.Web.Optimization.Bundle object itself for use in subsequent 
		/// method chaining.</returns>
		Bundle Include(params string[] virtualPaths);

		/// <summary>
		/// Specifies a file to be included in the System.Web.Optimization.Bundle.
		/// </summary>
		/// <param name="virtualPath">The virtual path of the file or file pattern to be 
		/// included in the bundle.</param>
		/// <param name="transforms">The System.Web.Optimization.Bundle object itself for use in 
		/// subsequent method chaining.</param>
		/// <returns></returns>
		Bundle Include(string virtualPath, params IItemTransform[] transforms);
		
		/// <summary>
		/// Renders link tags for a set of paths.
		/// </summary>
		/// <returns>An HTML string containing the link tag or tags for the bundle.</returns>
		IHtmlString Render();
	}
}
